gcc生成静态库.a与静态库.so以及两种库文件的创建和使用 | 您所在的位置:网站首页 › gcc 库文件生成和使用 › gcc生成静态库.a与静态库.so以及两种库文件的创建和使用 |
文章目录
一、编辑生成例子程序hello.h、hello.c和main.c1.创建目录,保存本次练习的文件2.用vim编辑器编辑生成所需三个例子程序3.将hello.c编译成.o文件
二、静态库文件的创建及使用1.由.o文件创建静态库文件2.在程序中使用静态库
三、动态库文件的创建及使用1.由.o文件创建动态库文件2.在程序中使用动态库
四、静态库和动态库的比较五、使用库文件的实例1.创建目录,保存实例所需的文件2.用vim编辑器编辑生成所需程序3.生成静态库文件与目标文件main链接并查看文件大小4.生成动态库文件与目标文件main链接并查看文件大小5.库文件大小的比较
六、总结七、参考资料
一、编辑生成例子程序hello.h、hello.c和main.c
1.创建目录,保存本次练习的文件
输入命令vim 程序名称按下Enter 键进入vim编辑器,再按下i键进入编辑模式,程序编写完成后按下Esc键退出编辑,再输入:wq保存编写的程序并退出vim编辑器。 (1)生成程序hello.h 输入命令gcc -c hello.c得到hello.o文件,再运行命令ls看是否生成了hello.o文件,在ls命令结果中,若看到hello.o文件,则本步操作完成,如下图: 输入命令ar -crv libmyhello.a hello.o创建静态库文件libmyhello.a,再运行命令ls看是否生成了静态库文件libmyhello.a,在ls命令结果中,若看到libmyhello.a文件,则此步操作完成,如下图: 先生成目标程序hello,再输入命令./hello运行hello程序看看结果如何。 (1)方法一:输入命令gcc -o hello main.c -L. -lmyhello 先输入命令gcc -shared -fPIC -o libmyhello.so hello.o得到动态库文件libmyhello.so,再输入命令ls查看动态库文件时是否生成,如下图: 先输入命令gcc -o hello main.c -L. -lmyhello或者命令gcc main.c libmyhello.so -o hello,无论用哪一个命令,接下来./hello都会提示出错,如下图: 当静态库文件和动态库文件重名时,gcc命令会优先使用哪个库文件呢?探究过程及结果如下: 先输入命令sudo rm -f hello hello.o main.o libmyhello.a /usr/lib/libmyhello.so删除除.c和.h外的所有文件,恢复成刚刚编辑完例子程序的状态,如下图: (1)生成程序sub1.c (1)输入命令gcc -c main.c sub1.c sub2.c生成三个.o文件,如下图: (1)输入命令gcc -shared -fPIC -o libyang.so sub1.o sub2.o将sub1.o、sub2.o生成动态库文件libyang.so,如下图: (3)输入命令ll查看文件大小,如下图: 静态库文件大小及其生成的可执行文件大小: 通过这次练习,我知道了在程序中使用动态库和使用静态库完全一样,用gcc生成静态库文件.a和动态库文件.so的方法以及相关注意事项,不过,在练习过程中,我也遇到了一些小状况,例如程序编写的时候一个字母或者符号的偏差导致后面程序不能运行,输入命令的时候少写,多写或错写字母会导致执行错误,这就意味着大家在练习过程中一定要细心,这样才省时省力。 七、参考资料gcc生成静态库.a和动态库.so |
CopyRight 2018-2019 实验室设备网 版权所有 |